package br.com.sgi.autentication;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.com.sgi.model.Users;
import br.com.sgi.service.UsersService;
import br.com.sgi.util.Criptografia;
import br.com.sgi.util.Mensagem;

@Controller("loginBean")
@Scope("request")
public class LoginBean {

	 @Autowired
	  private AuthenticationService authenticationService;

	  private String userName;
	  private String password;
	  private String senhaAtual;
	  
	  private int tamSenha;
	  
	  @Autowired
	  private UsersService usersService;
	  
	  private boolean primeiroAcesso = false;

	private int TAM_SENHA_MIN = 6;
	private int TAM_SENHA_MAX = 50;
	  

	  public String login() {
		
	    boolean success = authenticationService.login(userName.toLowerCase(), password);

	    if (!success) {
	    Mensagem.addWarn("erro.MSG_03", "j_spring_security_check:login");
	      return null;
	    }

	    if(UsuarioLogado.getUsuarioLogado().getPrimeiroAcesso() != null && UsuarioLogado.getUsuarioLogado().getPrimeiroAcesso()){
	    	primeiroAcesso = true;
	    	return null;
	    }
	    
	    return "home"; //2013120521740
	  }
	  
	  private boolean verificarTamanhoSenha(){
		  boolean senhaValida = true;
		  
		  
		  if(tamSenha < TAM_SENHA_MIN){
		  	Mensagem.addWarn("erro.MSG_21", "j_spring_security_check:login");
		  	senhaValida = false;
		  }else
			  if(tamSenha > TAM_SENHA_MAX){
				  Mensagem.addWarn("erro.MSG_22", "j_spring_security_check:login");
				  senhaValida = false;
			  }
		  
		  return senhaValida;
		  
	  }
	  
	  public String alterarSenha(){
		  Users user =  UsuarioLogado.getUsuarioLogado();
		  String redirect = null;
		  if(verificarTamanhoSenha()){
			  if(senhaAtual.equals(password)){
				  user.setPassword(password);
				  user.setPrimeiroAcesso(false);
			  	  usersService.atualizar(user);
			  	 Mensagem.msg("sucesso.MGS_04", "j_spring_security_check:login");
			  	 primeiroAcesso = false;
			  	redirect = "loginAlterarSenha";
			  }else
				  Mensagem.addWarn("erro.MSG_16", "j_spring_security_check:login");
		  }
		  
		 return redirect;
	  }

	  public String logout() {
	    authenticationService.logout();
	    return "login";
	  }

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		tamSenha = password.length();
		this.password = Criptografia.md5(password);
	}

	public boolean isPrimeiroAcesso() {
		return primeiroAcesso;
	}

	public void setPrimeiroAcesso(boolean primeiroAcesso) {
		this.primeiroAcesso = primeiroAcesso;
	}

	public String getSenhaAtual() {
		return senhaAtual;
	}

	public void setSenhaAtual(String senhaAtual) {
		this.senhaAtual = Criptografia.md5(senhaAtual);
	}
	
	  
	  
}
